package tool

/*******************************************************************************
Copyright:cloud
Author:cloudapex@126.com
Version:1.0
Date:2020-06-12
Description: 权限数据接口
*******************************************************************************/
import (
	"context"
	model "service/model/permis"

	gpc "gitee.com/cloudapex/protos/comm/pb"
	gpb "gitee.com/cloudapex/protos/permis/pb"

	"gitee.com/cloudapex/ulern/htp"
	"gitee.com/cloudapex/ulern/util"
	"github.com/gin-gonic/gin"
)

/*
 * 描述: 用户的角色缓存数据
 * 路由: /tool/cache_role
 * 方法: GET
 *********************************************************************/
type CacheRole struct {
	UId   int64  `form:"uId" json:"uId" binding:"omitempty"`     // UId
	Name  string `form:"name" json:"name" binding:"omitempty"`   // 名称
	Phone int64  `form:"phone" json:"phone" binding:"omitempty"` // 手机
}

func (this *CacheRole) Handle(c *gin.Context, ctx context.Context) htp.Response {
	if this.UId == 0 && this.Name == "" && this.Phone == 0 {
		return htp.RespParamErr("请至少使用一个查询条件", nil)
	}

	req := gpb.CacheRoleReq{}
	if err := util.Convert(&req, this); err != nil {
		return htp.RespConvertErr("", err)
	}

	rsp, err := model.Tool.CacheRole(ctx, &req)
	if err != nil {
		return htp.RespModelErr("", err)
	}
	return htp.RespOK("", rsp)
}

/*
 * 描述: 路由的缓存数据
 * 路由: /tool/cache_route
 * 方法: GET
 *********************************************************************/
type CacheRoute struct {
	Route string `form:"route" binding:"required"` // 名称
}

func (this *CacheRoute) Handle(c *gin.Context, ctx context.Context) htp.Response {
	req := gpb.CacheRouteReq{}
	if err := util.Convert(&req, this); err != nil {
		return htp.RespConvertErr("", err)

	}
	rsp, err := model.Tool.CacheRoute(ctx, &req)
	if err != nil {
		return htp.RespModelErr("", err)
	}
	return htp.RespOK("", rsp)
}

/*
 * 描述: 重置路由缓存数据
 * 路由: /tool/cache_reset
 * 方法: POST
 *********************************************************************/
type CacheReset struct {
}

func (this *CacheReset) Handle(c *gin.Context, ctx context.Context) htp.Response {
	req := gpc.IdRequest{}
	if err := util.Convert(&req, this); err != nil {
		return htp.RespConvertErr("", err)
	}
	rsp, err := model.Tool.CacheReset(ctx, &req)
	if err != nil {
		return htp.RespModelErr("", err)
	}
	return htp.RespOK("", rsp)
}
